﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Rappelz.GameServer
{
    public class HuntaholicManager
    {
        /// <summary>
        /// The instance!
        /// </summary>
        protected static HuntaholicManager m_instance;

        /// <summary>
        /// Returns the instance
        /// </summary>
        public static HuntaholicManager Instance
        {
            get {
                if (m_instance == null)
                    m_instance = new HuntaholicManager();
                return m_instance; 
            }
        }

// 
// UserDefinedType:   InstancedDungeonBasicInfo
// Function       :     public void InstancedDungeonBasicInfo(const struct HuntaholicManager::InstancedDungeonBasicInfo &)
// Function       :     public void HuntaholicManager::InstancedDungeonBasicInfo::InstancedDungeonBasicInfo(const struct GameContent::HUNTAHOLIC_INSTANCE_INFO *, const int, const int, const unsigned char, const char *)
// Data           :     this+0x0, Member, Type: const struct GameContent::HUNTAHOLIC_INSTANCE_INFO *, pInstanceInfo
// Data           :     this+0x4, Member, Type: const int, nInstanceNo
// Data           :     this+0x8, Member, Type: const int, nPartyID
// Data           :     this+0xC, Member, Type: const unsigned char, nMaxMemberCount
// Data           :     this+0xD, Member, Type: char[0x11], szPassword
// Data           :     this+0x20, Member, Type: class XCriticalSection, csInstance
// 
// Data           :     this+0x60, Member, Type: class std::vector<unsigned int,std::allocator<unsigned int> >, vMember
// 
// Function       :     public void HuntaholicManager::InstancedDungeonBasicInfo::~InstancedDungeonBasicInfo()
// Function       :     public void * __vecDelDtor(unsigned int)
// UserDefinedType:   InstancedDungeonFunctor
// VTable         :     , Type:  *
// Function       :     public bool operator()(struct HuntaholicManager::InstancedDungeonBasicInfo *)
// Function       :     public void InstancedDungeonFunctor(const struct HuntaholicManager::InstancedDungeonFunctor &)
// Function       :     public void InstancedDungeonFunctor()
// Function       :     public struct HuntaholicManager::InstancedDungeonFunctor & operator=(const struct HuntaholicManager::InstancedDungeonFunctor &)
// UserDefinedType:   InstancedDungeonInfo
// BaseClass      :     StructMonster::MonsterDeleteHandler, offset = 0x0
// 
// BaseClass      :     StructFieldProp::FieldPropDeleteHandler, offset = 0x4
// 
// BaseClass      :     HuntaholicManager::InstancedDungeonBasicInfo, offset = 0x8
// 
// Function       :     public void InstancedDungeonInfo(const struct HuntaholicManager::InstancedDungeonInfo &)
// Function       :     public void HuntaholicManager::InstancedDungeonInfo::InstancedDungeonInfo(const struct HuntaholicManager::HuntaholicInfo *, const struct GameContent::HUNTAHOLIC_INSTANCE_INFO *, const int, const int, const int, const char *)
// UserDefinedType:     _SCORE_TAG
// Function       :     public void HuntaholicManager::InstancedDungeonInfo::onMonsterDelete(struct StructMonster *)
// Function       :     public void HuntaholicManager::InstancedDungeonInfo::clearMonsters()
// Function       :     public void HuntaholicManager::InstancedDungeonInfo::onFieldPropDelete(struct StructFieldProp *)
// Function       :     public void HuntaholicManager::InstancedDungeonInfo::clearHealingProps()
// UserDefinedType:     _MEMBER_FUNCTOR
// Function       :     public void HuntaholicManager::InstancedDungeonInfo::doEachMembers(struct HuntaholicManager::InstancedDungeonInfo::_MEMBER_FUNCTOR &)
// Function       :     public void HuntaholicManager::InstancedDungeonInfo::broadcastInstanceDungeonInfoToMembers()
// Function       :     public const struct HuntaholicManager::InstancedDungeonInfo::_SCORE_TAG * HuntaholicManager::InstancedDungeonInfo::getScoreTag(const unsigned int &)
// Function       :     public struct HuntaholicManager::InstancedDungeonInfo::_SCORE_TAG * HuntaholicManager::InstancedDungeonInfo::getScoreTag(const unsigned int &)
// Data           :     this+0x78, Member, Type: const struct HuntaholicManager::HuntaholicInfo *, pHuntaholicInfo
// Data           :     this+0x7C, Member, Type: unsigned char, nLayer
// Data           :     this+0x80, Member, Type: volatile int, nMonsterDeleteProcCount
// Data           :     this+0x84, Member, Type: volatile int, nFieldPropDeleteProcCount
// Data           :     this+0x88, Member, Type: int, nKillCount
// Data           :     this+0x8C, Member, Type: int, nScore
// Data           :     this+0x90, Member, Type: class std::vector<HuntaholicManager::InstancedDungeonInfo::_SCORE_TAG,std::allocator<HuntaholicManager::InstancedDungeonInfo::_SCORE_TAG> >, vScoreTag
// 
// Typedef        :     , Type: struct std::pair<GameContent::HUNTAHOLIC_MONSTER_RESPAWN_INFO const *,unsigned long>
// Data           :     this+0xA0, Member, Type: class std::vector<std::pair<GameContent::HUNTAHOLIC_MONSTER_RESPAWN_INFO const *,unsigned long>,std::allocator<std::pair<GameContent::HUNTAHOLIC_MONSTER_RESPAWN_INFO const *,unsigned long> > >, vPendedMonsterRespawn
// 
// Data           :     this+0xB0, Member, Type: class std::vector<StructMonster *,std::allocator<StructMonster *> >, vRespawnedMonster
// 
// Typedef        :     , Type: struct std::pair<GameContent::FIELD_PROP_RESPAWN_INFO const *,unsigned long>
// Data           :     this+0xC0, Member, Type: class std::vector<std::pair<GameContent::FIELD_PROP_RESPAWN_INFO const *,unsigned long>,std::allocator<std::pair<GameContent::FIELD_PROP_RESPAWN_INFO const *,unsigned long> > >, vPendedHealingPropRespawn
// 
// Data           :     this+0xD0, Member, Type: class std::vector<StructFieldProp *,std::allocator<StructFieldProp *> >, vRespawnedHealingProp
// 
// Function       :     public void HuntaholicManager::InstancedDungeonInfo::~InstancedDungeonInfo()
// Function       :     public void * __vecDelDtor(unsigned int)
// UserDefinedType:   HuntaholicInfo
// Function       :     public void HuntaholicInfo(const struct HuntaholicManager::HuntaholicInfo &)
// Function       :     public void HuntaholicManager::HuntaholicInfo::HuntaholicInfo(const struct GameContent::HUNTAHOLIC_INFO *)
// Function       :     public void HuntaholicManager::HuntaholicInfo::~HuntaholicInfo()
// Data           :     this+0x0, Member, Type: const struct GameContent::HUNTAHOLIC_INFO *, pHuntaholicInfo
// Data           :     this+0x4, Member, Type: class XCriticalSection, csHuntaholic
// 
// Data           :     this+0x48, Member, Type: __int64, tLastBeginTime
// Data           :     this+0x50, Member, Type: __int64, tNextNoticeTime
// Data           :     this+0x58, Member, Type: bool, bIsBegun
// Data           :     this+0x59, Member, Type: bool, bEndNoticed
// Data           :     this+0x5C, Member, Type: volatile int, nInstanceSID
// Data           :     this+0x60, Member, Type: class std::vector<HuntaholicManager::InstancedDungeonInfo *,std::allocator<HuntaholicManager::InstancedDungeonInfo *> >, vInstancedDungeonInfo
// 
// Data           :     this+0x70, Member, Type: class std::vector<HuntaholicManager::InstancedDungeonInfo *,std::allocator<HuntaholicManager::InstancedDungeonInfo *> >, vPendedInstancedDungeonInfo
// 
// UserDefinedType:     _RANKING_TAG
// Data           :     this+0x80, Member, Type: class KHash<HuntaholicManager::HuntaholicInfo::_RANKING_TAG *,khash_def::hashPr_mod_basic<int> >, hsRankingTag
// 
// Data           :     this+0x9C, Member, Type: class std::vector<int,std::allocator<int> > *[0x3], pvMonthlyRank
// Data           :     this+0xA8, Member, Type: __int64, tNextRankingSettlingTime
// Function       :     public void HuntaholicManager::HuntaholicInfo::AddRankingScore(const int, const char *, const __int64 *)
// Function       :     public void HuntaholicManager::HuntaholicInfo::AddRankingScore(const struct StructPlayer *, const __int64 &)
// Function       :     protected void HuntaholicManager::HuntaholicInfo::validateRank(struct HuntaholicManager::HuntaholicInfo::_RANKING_TAG *, const enum _RANK_TYPE_IDX)
// Function       :     public struct HuntaholicManager::HuntaholicInfo & operator=(const struct HuntaholicManager::HuntaholicInfo &)
// Function       :     public void * __vecDelDtor(unsigned int)
// Function       :   public void HuntaholicManager::~HuntaholicManager()
// Function       :   public static struct HuntaholicManager & HuntaholicManager::Instance()
// Function       :   public const bool HuntaholicManager::Init()
// Function       :   public const bool HuntaholicManager::DeInit()
// Function       :   public const bool HuntaholicManager::IsInitialized()
// Function       :   public const bool HuntaholicManager::ClearHuntaholicInfo()
// Function       :   public const bool HuntaholicManager::RegisterHuntaholicInfo(const struct GameContent::HUNTAHOLIC_INFO *)
        public int GetHuntaholicID(ArPosition pos)
        {
            return 0;
        }

        public bool IsHuntaholicLobby(ArPosition pos)
        {
            return false;
        }
    
        public bool IsHuntaholicDungeon(ArPosition pos)
        {
            return false;
        }
// Function       :   public void SetLastBeginTime(const int, const __int64 &)
// Function       :   public void HuntaholicManager::SetNextRankingSettlingTime(const int, const __int64 &)
// Function       :   public void HuntaholicManager::AddRankingScore(const int, const int, const char *, const __int64 *)
// Function       :   public const bool HuntaholicManager::IsLobbyEnterableTime(const int, const __int64 &)
        public ArPosition GetLobbyPosition(int nHuntaholicId)
        {
            return null;
        }
        
        public byte GetProperLobbyLayer(int nHuntaholicId, int nLevel)
        {
            return 0;
        }
// Function       :   public const unsigned int GetFreeInstanceCount(const int)
// Function       :   public const unsigned int HuntaholicManager::GetUsedInstanceCount(const int, const int)
// Function       :   public const unsigned int HuntaholicManager::GetInstanceList(const int, const int, const int, struct TS_HUNTAHOLIC_INSTANCE_INFO *)
// Function       :   public const bool HuntaholicManager::BroadcastInstanceDungeonInfoToMembers(const int, const int)
// Function       :   public const unsigned short HuntaholicManager::CreateInstanceDungeon(const int, struct StructPlayer *, const char *, const int, const char *)
// Function       :   public const unsigned short HuntaholicManager::JoinInstanceDungeon(const int, struct StructPlayer *, const int, const char *)

        public ushort LeaveInstanceDungeon(int nHuntaholicId, Player player)
        {
            return 0;
        }

        public ushort QuitHunting(int nHuntaholicId, Player player, bool bNeedToReward, /*HuntingResult*/ int eResult)
        {
            return 0;
        }
// Function       :   public void HuntaholicManager::onProcess(int)
// Function       :   public void HuntaholicManager(const struct HuntaholicManager &)
// Function       :   protected void HuntaholicManager::HuntaholicManager()
// Function       :   protected const __int64 getLastBeginTime(const struct HuntaholicManager::HuntaholicInfo *)
// Function       :   protected void setLastBeginTime(struct HuntaholicManager::HuntaholicInfo *, const __int64 &)
// Function       :   protected const __int64 HuntaholicManager::getNextBeginTime(const struct HuntaholicManager::HuntaholicInfo *)
// Function       :   protected void HuntaholicManager::setNextRankingSettlingTime(struct HuntaholicManager::HuntaholicInfo *, const __int64 &)
// Function       :   protected const __int64 HuntaholicManager::isLobbyEnterableTime(const struct HuntaholicManager::HuntaholicInfo *, const __int64 &)
// Function       :   protected const bool HuntaholicManager::isPrepareBeginningTime(const struct HuntaholicManager::HuntaholicInfo *, const __int64 &)
// Function       :   protected const bool isHuntingTime(const struct HuntaholicManager::HuntaholicInfo *, const __int64 &)
// Function       :   protected const unsigned char HuntaholicManager::getProperLobbyLayer(const struct HuntaholicManager::HuntaholicInfo *, const int)
// Function       :   protected const unsigned int getFreeInstanceCount(const struct HuntaholicManager::HuntaholicInfo *)
// Function       :   protected const bool isInstanceFull(const struct HuntaholicManager::HuntaholicInfo *)
// Function       :   protected void HuntaholicManager::broadcastInLobby(const struct HuntaholicManager::HuntaholicInfo *, const char *, <NoType>)
// Function       :   protected void HuntaholicManager::broadcastInDungeon(const struct HuntaholicManager::HuntaholicInfo *, const char *, <NoType>)
// Function       :   protected static void HuntaholicManager::assembleInstanceInfo(const struct HuntaholicManager::InstancedDungeonInfo *, struct TS_HUNTAHOLIC_INSTANCE_INFO *)
// Function       :   protected const unsigned short HuntaholicManager::leaveInstanceDungeon(struct HuntaholicManager::InstancedDungeonInfo *, struct StructPlayer *)
// Function       :   protected const unsigned short HuntaholicManager::quitHunting(struct HuntaholicManager::InstancedDungeonInfo *, struct StructPlayer *, const bool, const enum _HUNTING_RESULT, const int, const struct ArPosition &, int *)
// Function       :   protected const bool HuntaholicManager::beginHunting(struct HuntaholicManager::HuntaholicInfo *)
// Function       :   protected const bool HuntaholicManager::endHunting(struct HuntaholicManager::HuntaholicInfo *)
// Function       :   protected void HuntaholicManager::procMonsterRespawn(struct HuntaholicManager::HuntaholicInfo *, const unsigned long &)
// Function       :   protected void HuntaholicManager::procHealingPropRespawn(struct HuntaholicManager::HuntaholicInfo *, const unsigned long &)
// Data           :   this+0x40, Member, Type: class std::vector<HuntaholicManager::HuntaholicInfo *,std::allocator<HuntaholicManager::HuntaholicInfo *> >, m_vHuntaholicInfo
// UserDefinedType:     std::vector<HuntaholicManager::HuntaholicInfo *,std::allocator<HuntaholicManager::HuntaholicInfo *> >
// 
// Data           :   this+0x50, Member, Type: class XCriticalSection, m_csProcessing
// UserDefinedType:     XCriticalSection
// 
// Function       :   public struct HuntaholicManager & operator=(const struct HuntaholicManager &)
// Function       :   public void __local_vftable_ctor_closure()
// Function       :   public void * __vecDelDtor(unsigned int)

    }
}
